home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 7 / PC World Interactive 7.iso / pcgames / EMERGY / BC5 / EXAMPLES / SERIES / DLLSKEL / readme.txt
Text File  |  1997-03-25  |  3KB  |  73 lines

  1. DLLSKEL - Based on GEN32
  2.  
  3. THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  4. ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  5. THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  6. PARTICULAR PURPOSE.
  7.  
  8. Copyright (C) 1993-1995  Microsoft Corporation.  All Rights Reserved.
  9.  
  10.  
  11. PURPOSE:
  12.     To demonstrate how to construct a simple Win32 DLL and implicitly load
  13.     it from a Win32 application.  The application calls two of the DLL's
  14.     exported functions.
  15.  
  16. USES:
  17.     Use this sample as a starting point for building Win32 DLLs.
  18.  
  19. COMMENTS:
  20.     No module definition file is used in this sample because Win32
  21.     applications do not export functions and all settings in a module
  22.     definition file can be set with linker command-line switches.
  23.  
  24.     The 32-bit C/C++ compiler supports two new keywords for exporting
  25.     functions from Win32 DLLs and importing them into applications:
  26.  
  27.       __declspec(dllexport)     // Used to declare exported functions
  28.       __declspec(dllimport)     // Used to declare imported functions
  29.  
  30.     Both of these keywords go before the function declaration, as in:
  31.  
  32.        __declspec(dllexport) int FunctionName (int param1, float param2);
  33.        __declspec(dllimport) int FunctionName (int param1, float param2);
  34.  
  35.     A DLL exports a function by putting the __declspec(dllexport)
  36.     keyword in front of the function declaration and then using the
  37.     -implib:DLLName.LIB linker command line argument.
  38.  
  39.     An application can then import the function by declaring it with the
  40.     __declspec(dllimport) keyword and linking to the DLL's import library.
  41.  
  42.  
  43.     In general, Win32 DLLs should be built to handle multithreaded
  44.     applications robustly because DLLs cannot control which types of
  45.     applications call them.  To do so, link with the multithreaded
  46.     runtime libraries, use the /MT switch, and then make sure that
  47.     global variables and other shared resources (file handles, dynamically-
  48.     allocated memory, etc) are protected by critical sections or mutexes.
  49.     A good place to initialize critical sections and mutexes is in the
  50.     DLL_PROCESS_ATTACH message of DllMain().
  51.  
  52. MODULE MAP:
  53.   The following files implement the application (APPSKEL.EXE):
  54.  
  55.     Dispatch- Message dispatching routines
  56.     WinMain - Calls initialization functions and processes the message loop
  57.     AppSkel - Implements the windows procedure for the main application window
  58.     Init    - Performs application and instance specific initialization
  59.     About   - Defines a standard about dialog box.
  60.     Misc    - Defines the applications specific commands not related to
  61.                 a specific module.
  62.  
  63.   The following files implement the DLL (DLLSKEL.DLL):
  64.  
  65.     DLLMain - The DLL's entry point function
  66.     Exports - Contains the DLL's exported functions
  67.  
  68.  
  69.     MAKEFILE     - The application's makefile.  Also executes DLL's makefile.
  70.     DLLSKEL.MAK  - The DLL's makefile
  71.  
  72.  
  73.